package com.dsh.word.Test;

import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;

import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.util.List;

public class POiTest {

    /**
     * 直接生成表格
     */

    public static void main(String[] args) throws Exception {
        XWPFDocument document = new XWPFDocument();
        //创建段落
        XWPFParagraph titleParagraph = document.createParagraph();
//        XWPFRun titleRun = titleParagraph.createRun();
//        titleRun.setText("文档表格");
//        titleRun.setFontSize(12);
//        titleRun.setBold(true);

        //设置表格大小
        int rows = 5;
        int clos = 4;
        XWPFTable table = document.createTable(rows, clos);
        //设置表格宽度为页面宽度
        CTTblWidth width = table.getCTTbl().addNewTblPr().addNewTblW();
        width.setType(STTblWidth.DXA);
        width.setW(BigInteger.valueOf(9072));
        //设置表格内容
        //合并单元格
        // 合并第一行的三个单元格
        table.getRow(0).getCell(0).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
        table.getRow(0).getCell(1).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
        table.getRow(0).getCell(2).getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);

        // 设置合并后单元格的文本并居中
        XWPFParagraph paragraph = table.getRow(0).getCell(0).getParagraphArray(0);
        XWPFRun run = paragraph.createRun();
        run.setText("合并并居中的单元格");
        paragraph.setAlignment(ParagraphAlignment.CENTER);

//        String[] str = {"序号", "年龄", "姓名", "职业"};
//        XWPFTableRow headerRow = table.getRow(0);
//        for (int i = 0; i < str.length; i++) {
//            XWPFTableCell cell = headerRow.getCell(i);
//            XWPFParagraph para = cell.getParagraphs().get(0);
//            XWPFRun run = para.createRun();
//            run.setText(str[i]);
//            run.setBold(true);
//            cell.getCTTc().addNewTcPr().addNewShd().setFill("D3D3D3");
//
//        }
        //设置表格内容
//        for (int row = 1; row < rows; row++) {
//            XWPFTableRow dataRow = table.getRow(row);
//            //循环行
//            for (int col = 0; col < clos; col++) {
//                // 拿到单个单元格
//                XWPFTableCell cell = dataRow.getCell(col);
//                XWPFParagraph para = cell.getParagraphs().get(0);
//                XWPFRun run = para.createRun();
//                if (col == 0) {
//                    run.setText(String.valueOf(row)); // 序号
//                } else if (col == 1) {
//                    run.setText("姓名" + row); // 姓名
//                } else if (col == 2) {
//                    run.setText(String.valueOf(20 + row)); // 年龄
//                } else {
//                    run.setText("职业" + row); // 职业
//                }
//            }
//        }


        try (FileOutputStream out = new FileOutputStream("table.docx")) {
            document.write(out);
            System.out.println("ok");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


}
